package com.fr.report.script;

import com.fr.report.script.core.parser.ConditionalOrExpression;
import com.fr.report.script.core.parser.UtilEvalError;
import java.io.Serializable;

public abstract interface Function extends Serializable
{
  public static final Type MATH = new Type(null);
  public static final Type TEXT = new Type(null);
  public static final Type DATETIME = new Type(null);
  public static final Type LOGIC = new Type(null);
  public static final Type ARRAY = new Type(null);
  public static final Type REPORT = new Type(null);
  public static final Type OTHER = new Type(null);

  public abstract Calculator getCalculator();

  public abstract void setCalculator(Calculator paramCalculator);

  public abstract Object[] processArguments(ConditionalOrExpression[] paramArrayOfConditionalOrExpression)
    throws UtilEvalError;

  public abstract String getCN();

  public abstract String getEN();

  public abstract Type getType();

  public abstract Object run(Object[] paramArrayOfObject);

  public static final class Type
  {
    private Type()
    {
    }

    Type(Function.1 param1)
    {
    }
  }
}